如果本機沒有Maven,就先到Maven官方下載Maven檔案
接著可以把Maven跟JDK放在差不多的路徑位置,方便統一管理(JDK如果沒有也請到官方下載)
docker cp <要複製的檔案路徑> <container id 或 container name>:<這個container的路徑位址>
# 把 maven 複製到 jenkins 容器中
docker cp /usr/local/build/maven jenkins:/var/jenkins_home/
# 把 jdk 複製到 jenkins 容器中
docker cp /usr/local/build/jdk jenkins:/var/jenkins_home/
進到Jenkins 容器中確認是不是有複製進去了
docker exec -it jenkins bash
Jenkins首頁選擇Tools配置
找到JDK與Maven的區塊,名稱自行定義,JAVA_HOME 及 MAVAN_HOME 就選擇前面複製進去Jenkins Container 資料夾內的路徑,如果路徑指定錯誤時,輸入框下會有提示訊息。
先在Jenkins專案項目中 > Configuration > 組態(設定) > Build Steps
選擇Maven版本,會帶出前面所設定的名稱可供直接選擇
Goal:輸入每次Build 的過程中Maven要做哪些事?
先使用打包專案並且跳過test來做測試。
接著回到專案項目首頁,點選Build,馬上建置
就會看到已經開始打包專案了
(第一次打包如果沒有錯誤的話,時間會比較久,因為很多maven的依賴都會需要下載到container中)
因為我的專案有引用其他微服務專案,所以在透過maven打包時會發生以下錯誤,找不到依賴引用的pom檔。
於是我實際到Jenkins container中確認m2資料夾中,是不是真的沒有。
疑~怎麼是.lastUpdated?
那是因為在下載不到goal-life-common的依賴,所以預設會先直接命名為.lastUpdated,因為maven pull失敗。
→ 刪除該檔案:find ./ -name "*.lastUpdated" | xargs rm -rf
docker cp /Users/lulu/.m2/repository/tw/com/goalLife/goal-life-common/0.1.0/goal-life-common-0.1.0.pom jenkins:/var/jenkins_home/.m2/repository/tw/com/goalLife/goal-life-common/0.1.0
看到Successfully copied就是複製成功囉!
上方我們已經把依賴的其他服務複製到Jenkins 容器中的指定位置了,重新build Jenkis確認能不能順利完成打包。
執行過程中若有其他錯誤,都會build失敗,並且能從log中確認到失敗的原因,一個一個排解問題之後,終於成功啦!